#ifndef LOG_API_CALL_HPP
#define LOG_API_CALL_HPP

#include<string>

struct PrintAPI {
	static void Entrance(std::string commandName);

	static void EntranceInts(std::string commandName, int* para0 = nullptr, int* para1 = nullptr, int* para2 = nullptr, int* para3 = nullptr, int* para4 = nullptr);

	static void EntranceFloats(std::string commandName, int* slideIdx, float* paras, int paraNum);

	static void EntranceFloats(std::string commandName, int* slideIdx, float* para0 = nullptr, float* para1 = nullptr, float* para2 = nullptr, float* para3 = nullptr, float* para4 = nullptr);

	static void EntranceInt3Floats(std::string commandName, int* slideIdx, int* para0, int* para1, float* paras, int paraNum);

	static void EntranceStr(std::string commandName, std::wstring para0);
	static void EntranceStr(std::string commandName, std::string para0);
	static void EntranceStr(std::string commandName, std::wstring slave_name, std::wstring para0);
	static void EntranceStrs(std::string commandName, std::wstring para0, std::wstring para1);
	static void EntranceStrs(std::string commandName, std::wstring para0, std::wstring para1, std::wstring para2);
	static void EntranceStrs(std::string commandName, std::wstring para0, std::wstring para1, std::wstring para2, std::wstring para3);

	static void EntranceFlag(std::string commandName, bool* boolVal, int* intVal, float* floatVal);
	static void EntranceFlag(std::string commandName, std::wstring paraName, bool* boolVal, int* intVal, float* floatVal);

	static void Return(std::string commandName, int flag);
	static std::wstring Return(std::wstring Comment);
	static void Line(std::string content);
private:
	static void PrintAPILineCore(std::string line);
	static void PrintAPILineCore(std::wstring line);
};

#endif